Recently, distributed computing environments have been employed to maintain collections of data. Multiple computing nodes, potentially distributed across various geographic regions and data centers, may be employed to collectively provide applications with an efficient mechanism for storing and retrieving data. The complexity of such systems may increase in proportion to the number of computing nodes that make up the system and in proportion to the number of clients of the system. One issue that may arise involves efficient processing of updates to the collection of data, particularly when many clients are reading and writing to the same value.
In many applications, the data maintained by the distributed system will be subject to various constraints. These may include limitations on permissible ranges of data. One example involves counter values, which may be frequently incremented and decremented, but which are constrained in some way, such as not being permitted to fall below zero. Traditional approaches to enforcing constraints such as this may involve using locks to prevent access to the data by more than once client at a time. Approaches such as this, however, may cause performance bottlenecks.